import sqlite3 from 'sqlite3';
import { open, Database } from 'sqlite';

// 数据库连接单例，确保整个应用生命周期内只初始化一次
let db: Database | null = null;

/**
 * 获取数据库连接
 * 如果连接不存在则创建新连接，已存在则返回现有连接
 * @returns SQLite数据库连接实例
 */
export async function getDb() {
  if (!db) {
    db = await open({
      filename: './db/custom.db',  // 数据库文件路径
      driver: sqlite3.Database   // 使用sqlite3驱动
    });
  }
  return db;
}

/**
 * 执行SQL查询
 * @param sql SQL查询语句
 * @param params SQL参数数组，用于防止SQL注入
 * @returns 查询结果数组
 */
export async function query(sql: string, params: any[] = []) {
  const database = await getDb();
  return database.all(sql, params);
}

/**
 * 关闭数据库连接
 * 应用退出时调用，确保资源正确释放
 */
export async function closeDb() {
  if (db) {
    await db.close();
    db = null;
  }
}